package com.cskaoyan.javase.overload._0introduction;
/**
 * 方法的重载的机制
 * 概念: 在同一个类当中,Java语法允许存在多个方法名相同的语法,称之为方法的重载.
 * 但名字一旦相同后，多个方法之间又如何区分呢？
 * 所以方法的重载是有条件的。
 *
 * 方法的签名: 唯一确定一个方法,指的是"方法名+形参列表"
 * 现在方法的重载要求方法名一样了,那么为了保证方法的唯一性,多个方法的形参列表必须不同
 * 方法重载的条件: 方法名相同时,形参列表不同(同类中)
 *
 * 何为形参列表不同?
 *      1.参数的个数不同
 *      2.如果参数的个数相同,那么数据类型不同
 *      3.如果参数的个数相同,数据类型也相同,那么参数顺序不同
 *
 * 以上是形参列表不同的三种情况,也是唯三的三种情况,没有别的情况
 * 其他的,典型的不能构成方法重载的条件:
 *      1.形参的名字不同
 *      2.修饰符不同
 *      3.返回值类型不同
 *
 * 扩展:
 *      1.方法的重载在面向对象当中,较多用在类中的构造器中
 *      2.从代码规范上来说,一个类中,如果有多个方法组成方法的重载
 *          那么应该将它们写在一起,方便阅读
 *
 * @since 09:38
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class NewDemo {
    public static void main(String[] a) {
        System.out.println("hello");
        System.out.println(123);
        System.out.println('a');
    }

    // 'test()' is already defined in 'com.cskaoyan.javase.overload._0introduction.NewDemo'
    // public static void test(){}
    public static void test(){}
    /*public static int test(){
        return 0;
    }*/
    // void test(){}
    public static void test(int a){}
    // 形参名不同不能构成方法重载
    // public static void test(int b){}
    public static void test(double a){}
    public static void test(double a,int b){}
    public static void test(int a,double b){}
}
